import * as grpc from 'grpc';
import { Observable } from 'rxjs';
/** Namespace va600. */
export namespace va600 {

    /** Contains all the RPC service clients. */
    export interface ClientFactory {
    }

    /** Builder for an RPC service server. */
    export interface ServerBuilder {
    }

    /** Namespace client. */
    export namespace client {

        /** Contains all the RPC service clients. */
        export interface ClientFactory {

            /**
             * Returns the Algorithm service client.
             */
            getAlgorithm(): va600.client.Algorithm;
        }

        /** Builder for an RPC service server. */
        export interface ServerBuilder {

            /**
             * Adds a Algorithm service implementation.
             * @param impl Algorithm service implementation
             */
            addAlgorithm(impl: va600.client.Algorithm): va600.client.ServerBuilder;
        }

        /** Constructs a new Algorithm service. */
        export interface Algorithm {

            /**
             * Calls ReportProfessionalRunningPostureStatus.
             * @param request ProfessionalRunningPostureStatus message or plain object
             *  * @param metadata Optional metadata
             * @returns Promise
             */
            reportProfessionalRunningPostureStatus(request: va600.client.ProfessionalRunningPostureStatus, metadata?: grpc.Metadata): Observable<va600.client.CommonRes>;

            /**
             * Calls ReportProfessionalRunningPostureRealTimeData.
             * @param request ProfessionalRunningPostureRealTimeData message or plain object
             *  * @param metadata Optional metadata
             * @returns Promise
             */
            reportProfessionalRunningPostureRealTimeData(request: va600.client.ProfessionalRunningPostureRealTimeData, metadata?: grpc.Metadata): Observable<va600.client.CommonRes>;

            /**
             * Calls ReportProfessionalJointLoadData.
             * @param request ProfessionalJointLoadData message or plain object
             *  * @param metadata Optional metadata
             * @returns Promise
             */
            reportProfessionalJointLoadData(request: va600.client.ProfessionalJointLoadData, metadata?: grpc.Metadata): Observable<va600.client.CommonRes>;

            /**
             * Calls ReportProfessionalRunningPostureJoints.
             * @param request ProfessionalRunningPostureJoints message or plain object
             *  * @param metadata Optional metadata
             * @returns Promise
             */
            reportProfessionalRunningPostureJoints(request: va600.client.ProfessionalRunningPostureJoints, metadata?: grpc.Metadata): Observable<va600.client.CommonRes>;

            /**
             * Calls ReportProfessionalRunningPostureResultData.
             * @param request ProfessionalRunningPostureResultData message or plain object
             *  * @param metadata Optional metadata
             * @returns Promise
             */
            reportProfessionalRunningPostureResultData(request: va600.client.ProfessionalRunningPostureResultData, metadata?: grpc.Metadata): Observable<va600.client.CommonRes>;
        }

        /** Properties of a ProfessionalRunningPostureStatus. */
        export interface ProfessionalRunningPostureStatus {

            /** ProfessionalRunningPostureStatus status */
            status?: (va600.client.ProfessionalRunningPostureStatus.AlgStatus|null);
        }

        export namespace ProfessionalRunningPostureStatus {

            /** AlgStatus enum. */
            export enum AlgStatus {
                READY = 0,
                FAULT = 1
            }
        }

        /** Properties of a ProfessionalRunningPostureRealTimeData. */
        export interface ProfessionalRunningPostureRealTimeData {

            /** ProfessionalRunningPostureRealTimeData leftKneeAngle */
            leftKneeAngle?: (number|null);

            /** ProfessionalRunningPostureRealTimeData rightKneeAngle */
            rightKneeAngle?: (number|null);

            /** ProfessionalRunningPostureRealTimeData leftAngle */
            leftAngle?: (number|null);

            /** ProfessionalRunningPostureRealTimeData rightAngle */
            rightAngle?: (number|null);

            /** ProfessionalRunningPostureRealTimeData frontDistance */
            frontDistance?: (number|null);

            /** ProfessionalRunningPostureRealTimeData backDistance */
            backDistance?: (number|null);

            /** ProfessionalRunningPostureRealTimeData leftKneeExternalExpansionAngle */
            leftKneeExternalExpansionAngle?: (number|null);

            /** ProfessionalRunningPostureRealTimeData leftKneeExternalAdductionAngle */
            leftKneeExternalAdductionAngle?: (number|null);

            /** ProfessionalRunningPostureRealTimeData rightKneeExternalExpansionAngle */
            rightKneeExternalExpansionAngle?: (number|null);

            /** ProfessionalRunningPostureRealTimeData rightKneeExternalAdductionAngle */
            rightKneeExternalAdductionAngle?: (number|null);

            /** ProfessionalRunningPostureRealTimeData verticalAmplitude */
            verticalAmplitude?: (number|null);

            /** ProfessionalRunningPostureRealTimeData verticalRate */
            verticalRate?: (number|null);

            /** ProfessionalRunningPostureRealTimeData stride */
            stride?: (number|null);

            /** ProfessionalRunningPostureRealTimeData landingDistance */
            landingDistance?: (number|null);

            /** ProfessionalRunningPostureRealTimeData pace */
            pace?: (number|null);
        }

        /** Properties of a ProfessionalJointLoadData. */
        export interface ProfessionalJointLoadData {

            /** ProfessionalJointLoadData leftKneeJointLoad */
            leftKneeJointLoad?: (number|null);

            /** ProfessionalJointLoadData rightKneeJointLoad */
            rightKneeJointLoad?: (number|null);

            /** ProfessionalJointLoadData leftHipJointLoad */
            leftHipJointLoad?: (number|null);

            /** ProfessionalJointLoadData rightHipJointLoad */
            rightHipJointLoad?: (number|null);
        }

        /** Properties of a ProfessionalRunningPostureJoints. */
        export interface ProfessionalRunningPostureJoints {

            /** ProfessionalRunningPostureJoints joints */
            joints?: (va600.client.ProfessionalRunningPostureJoints.Joint[]|null);
        }

        export namespace ProfessionalRunningPostureJoints {

            /** Properties of a Joint. */
            export interface Joint {

                /** Joint x */
                x?: (number|null);

                /** Joint y */
                y?: (number|null);

                /** Joint z */
                z?: (number|null);
            }
        }

        /** Properties of a ProfessionalRunningPostureResultData. */
        export interface ProfessionalRunningPostureResultData {

            /** ProfessionalRunningPostureResultData jsonFileStream */
            jsonFileStream?: (string|null);
        }

        /** Properties of a CommonRes. */
        export interface CommonRes {

            /** CommonRes code */
            code?: (va600.client.CommonRes.Code|null);
        }

        export namespace CommonRes {

            /** Code enum. */
            export enum Code {
                OK = 0
            }
        }
    }
}
